home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / phpMyAdmin / db_operations.php < prev    next >
PHP Script  |  2005-03-09  |  17KB  |  381 lines

  1. <?php
  2. /* $Id: db_operations.php,v 2.6 2005/03/09 15:36:49 lem9 Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. require_once('./libraries/grab_globals.lib.php');
  6. require_once('./libraries/common.lib.php');
  7. require_once('./libraries/mysql_charsets.lib.php');
  8. /**
  9.  * Rename database
  10.  */
  11. if (isset($db) &&
  12.     ((isset($db_rename) && $db_rename == 'true') ||
  13.     (isset($db_copy) && $db_copy == 'true'))) {
  14.  
  15.     require_once('./libraries/tbl_move_copy.php');
  16.  
  17.     if (isset($db_rename) && $db_rename == 'true') $move = TRUE;
  18.     else $move = FALSE;
  19.  
  20.     if (!isset($newname) || empty($newname)) {
  21.         $message = $strDatabaseEmpty;
  22.     } else {
  23.         $local_query = 'CREATE DATABASE ' . PMA_backquote($newname) . ';';
  24.         $sql_query = $local_query;
  25.         PMA_DBI_query($local_query);
  26.         $tables = PMA_DBI_get_tables($db);
  27.         foreach ($tables as $table) {
  28.             $back = $sql_query;
  29.             $sql_query = '';
  30.             PMA_table_move_copy($db, $table, $newname, $table, isset($what) ? $what : 'data', $move);
  31.             $sql_query = $back . $sql_query;
  32.         }
  33.         if ($move) {
  34.             $local_query = 'DROP DATABASE ' . PMA_backquote($db) . ';';
  35.             $sql_query .= "\n" . $local_query;
  36.             PMA_DBI_query($local_query);
  37.             $message    = sprintf($strRenameDatabaseOK, htmlspecialchars($db), htmlspecialchars($newname));
  38.         } else {
  39.             $message    = sprintf($strCopyDatabaseOK, htmlspecialchars($db), htmlspecialchars($newname));
  40.         }
  41.         $reload     = TRUE;
  42.  
  43.         /* Change database to be used */
  44.         if ($move) {
  45.             $db         = $newname;
  46.         } else {
  47.             $pma_uri_parts = parse_url($cfg['PmaAbsoluteUri']);
  48.             if (isset($switch_to_new) && $switch_to_new == 'true') {
  49.                 setcookie('pma_switch_to_new', 'true', 0, $GLOBALS['cookie_path'], '' , $GLOBALS['is_https']);
  50.                 $db         = $newname;
  51.             } else {
  52.                 setcookie('pma_switch_to_new', '', 0, $GLOBALS['cookie_path'], '' , $GLOBALS['is_https']);
  53.             }
  54.         }
  55.     }
  56. }
  57. /**
  58.  * Settings for relations stuff
  59.  */
  60.  
  61. require_once('./libraries/relation.lib.php');
  62. $cfgRelation = PMA_getRelationsParam();
  63.  
  64. /**
  65.  * Check if comments were updated
  66.  * (must be done before displaying the menu tabs)
  67.  */
  68. if ($cfgRelation['commwork'] && isset($db_comment) && $db_comment == 'true') {
  69.     PMA_SetComment($db, '', '(db_comment)', $comment);
  70. }
  71.  
  72. /**
  73.  * Prepares the tables list if the user where not redirected to this script
  74.  * because there is no table in the database ($is_info is TRUE)
  75.  */
  76. if (empty($is_info)) {
  77.     require('./db_details_common.php');
  78.     $url_query .= '&goto=db_operations.php';
  79.  
  80.     // Gets the database structure
  81.     $sub_part = '_structure';
  82.     require('./db_details_db_info.php');
  83.     echo "\n";
  84. }
  85.  
  86. if (PMA_MYSQL_INT_VERSION >= 40101) {
  87.     $db_collation = PMA_getDbCollation($db);
  88. }
  89. ?>
  90.  
  91. <table border="0" cellpadding="2" cellspacing="0">
  92.     <!-- Create a new table -->
  93.         <form method="post" action="tbl_create.php" onsubmit="return (emptyFormElements(this, 'table') && checkFormElementInRange(this, 'num_fields', 1))">
  94.      <tr>
  95.      <td class="tblHeaders" colspan="3" nowrap="nowrap"><?php
  96.         echo PMA_generate_common_hidden_inputs($db);
  97.         if($cfg['PropertiesIconic']){ echo '<img src="' . $pmaThemeImage . 'b_newtbl.png" border="0" width="16" height="16" hspace="2" align="middle" />'; }
  98.         // if you want navigation:
  99.         $strDBLink = '<a href="' . $GLOBALS['cfg']['DefaultTabDatabase'] . '?' . PMA_generate_common_url() . '&db=' . urlencode($GLOBALS['db']) . '">'
  100.                    . htmlspecialchars($GLOBALS['db']) . '</a>';
  101.         // else use
  102.         // $strDBLink = htmlspecialchars($db);
  103. echo '             ' . sprintf($strCreateNewTable, $strDBLink) . ': ' . "\n";
  104. echo '     </td></tr>';
  105. echo '     <tr bgcolor="'.$cfg['BgcolorOne'].'"><td nowrap="nowrap">';
  106. echo '             ' . $strName . ': ' . "\n";
  107. echo '     </td>';
  108. echo '     <td nowrap="nowrap">';
  109. echo '             ' . '<input type="text" name="table" maxlength="64" size="30" class="textfield" />';
  110. echo '     </td><td> </td></tr>';
  111. echo '     <tr bgcolor="'.$cfg['BgcolorOne'].'"><td nowrap="nowrap">';
  112. echo '             ' . $strFields . ': ' . "\n";
  113. echo '     </td>';
  114. echo '     <td nowrap="nowrap">';
  115. echo '             ' . '<input type="text" name="num_fields" size="2" class="textfield" />' . "\n";
  116. echo '     </td>';
  117. echo '     <td align="right">';
  118. echo '             ' . ' <input type="submit" value="' . $strGo . '" />' . "\n";
  119. echo '     </td> </tr>';
  120. echo '        </form>';
  121.  
  122. echo '<table border="0" cellpadding="2" cellspacing="0">';
  123. if ($cfgRelation['commwork']) {
  124. ?>
  125.     <!-- Alter/Enter db-comment -->
  126.         <tr><td colspan="3"><img src="<?php echo $GLOBALS['pmaThemeImage'] . 'spacer.png'; ?>" width="1" height="1" border="0" alt="" /></td></tr>
  127.  
  128.         <tr>
  129.         <td colspan="3" class="tblHeaders"><?php
  130.     if ($cfg['PropertiesIconic']) {
  131.         echo '<img src="' . $pmaThemeImage . 'b_comment.png" border="0" width="16" height="16" hspace="2" align="middle" />';
  132.     }
  133.     echo $strDBComment;
  134.     $comment = PMA_getComments($db);
  135.         ?></td></tr>
  136.                                 <form method="post" action="db_operations.php">
  137.         <tr bgcolor="<?php echo $cfg['BgcolorOne']; ?>">
  138.                                   <td colspan="2" nowrap="nowrap">
  139.             <input type="hidden" name="db_comment" value="true" />
  140.             <?php echo PMA_generate_common_hidden_inputs($db); ?>
  141.             <input type="text" name="comment" class="textfield" size="30" value="<?php echo (isset($comment) && is_array($comment) ? htmlspecialchars(implode(' ', $comment)) : ''); ?>" /></td><td align="right">
  142.             <input type="submit" value="<?php echo $strGo; ?>" />
  143.          </td></tr>
  144.         </form>
  145. <?php
  146. }
  147. ?>
  148.     <!-- Rename database -->
  149.         <tr><td colspan="3"><img src="<?php echo $GLOBALS['pmaThemeImage'] . 'spacer.png'; ?>" width="1" height="1" border="0" alt="" /></td></tr>
  150.         <tr><td colspan="3" class="tblHeaders"><?php
  151.           if ($cfg['PropertiesIconic']) {
  152.               echo '<img src="' . $pmaThemeImage . 'b_edit.png" border="0" width="16" height="16" hspace="2" align="middle" />';
  153.           }
  154.           echo $strDBRename.': ';
  155.           ?></td></tr>
  156.         <form method="post" action="db_operations.php"
  157.             onsubmit="return emptyFormElements(this, 'newname')">
  158.                                         <tr bgcolor="<?php echo $cfg['BgcolorOne']; ?>"><td colspan="2"><?php
  159.           echo '<input type="hidden" name="db_rename" value="true" />'
  160.              . PMA_generate_common_hidden_inputs($db);
  161.           ?><input type="text" name="newname" size="30" class="textfield" value="" /></td>
  162.             <td align="right"><input type="submit" value="<?php echo $strGo; ?>" /></td>
  163.         </form></tr>
  164.  
  165.     <!-- Copy database -->
  166.         <tr><td colspan="3"><img src="<?php echo $GLOBALS['pmaThemeImage'] . 'spacer.png'; ?>" width="1" height="1" border="0" alt="" /></td></tr>
  167.         <tr><td colspan="3" class="tblHeaders"><?php
  168.           if ($cfg['PropertiesIconic']) {
  169.               echo '<img src="' . $pmaThemeImage . 'b_edit.png" border="0" width="16" height="16" hspace="2" align="middle" />';
  170.           }
  171.           echo $strDBCopy.': ';
  172.           ?></td></tr>
  173.         <form method="post" action="db_operations.php"
  174.             onsubmit="return emptyFormElements(this, 'newname')">
  175.                                         <tr bgcolor="<?php echo $cfg['BgcolorOne']; ?>"><td colspan="3"><?php
  176.           echo '<input type="hidden" name="db_copy" value="true" />'
  177.              . PMA_generate_common_hidden_inputs($db);
  178.           ?><input type="text" name="newname" size="30" class="textfield" value="" /></td>
  179.         </tr><tr>
  180.             <td nowrap="nowrap" bgcolor="<?php echo $cfg['BgcolorOne']; ?>" colspan="2">
  181.                 <input type="radio" name="what" value="structure" id="radio_copy_structure" style="vertical-align: middle" /><label for="radio_copy_structure"><?php echo $strStrucOnly; ?></label>  <br />
  182.                 <input type="radio" name="what" value="data" id="radio_copy_data" checked="checked" style="vertical-align: middle" /><label for="radio_copy_data"><?php echo $strStrucData; ?></label>  <br />
  183.                 <input type="radio" name="what" value="dataonly" id="radio_copy_dataonly" style="vertical-align: middle" /><label for="radio_copy_dataonly"><?php echo $strDataOnly; ?></label>  <br />
  184.  
  185.                 <input type="checkbox" name="auto_increment" value="1" id="checkbox_auto_increment" style="vertical-align: middle" /><label for="checkbox_auto_increment"><?php echo $strAddAutoIncrement; ?></label><br />
  186.                 <input type="checkbox" name="constraints" value="1" id="checkbox_constraints" style="vertical-align: middle" /><label for="checkbox_constraints"><?php echo $strAddConstraints; ?></label><br />
  187.                 <?php
  188.                     if (isset($_COOKIE) && isset($_COOKIE['pma_switch_to_new']) && $_COOKIE['pma_switch_to_new'] == 'true') {
  189.                         $pma_switch_to_new = 'true';
  190.                     }
  191.                 ?>
  192.                 <input type="checkbox" name="switch_to_new" value="true" id="checkbox_switch"<?php echo ((isset($pma_switch_to_new) && $pma_switch_to_new == 'true') ? ' checked="checked"' : ''); ?> style="vertical-align: middle" /><label for="checkbox_switch"><?php echo $strSwitchToDatabase; ?></label>  
  193.             </td>
  194.             <td align="<?php echo $cell_align_right; ?>" valign="bottom" bgcolor="<?php echo $cfg['BgcolorOne']; ?>">
  195.                 <input type="submit" name="submit_copy" value="<?php echo $strGo; ?>" />
  196.             </td>
  197.         </tr>
  198.     </form>
  199.  
  200. <?php
  201.  
  202. if (PMA_MYSQL_INT_VERSION >= 40101) {
  203.     // MySQL supports setting default charsets / collations for databases since
  204.     // version 4.1.1.
  205.     echo '    <!-- Change database charset -->' . "\n"
  206.        . '    <tr><td colspan="3"><img src="' . $GLOBALS['pmaThemeImage'] . 'spacer.png' . '" width="1" height="1" border="0" alt="" /></td></tr>' . "\n"
  207.        . '    <tr><td colspan="3" class="tblHeaders">';
  208.     if ($cfg['PropertiesIconic']) {
  209.         echo '<img src="' . $pmaThemeImage . 's_asci.png" border="0" width="16" height="16" hspace="2" align="middle" />';
  210.     }
  211.     echo '      <label for="select_db_collation">' . $strCollation . '</label>: ' . "\n"
  212.        . '    </td></tr>' . "\n"
  213.        . '        <form method="post" action="./db_operations.php">' . "\n"
  214.        . '    <tr bgcolor="' . $cfg['BgcolorOne'] . '"><td colspan="2" nowrap="nowrap">'
  215.        . PMA_generate_common_hidden_inputs($db, $table, 3)
  216.        . PMA_generateCharsetDropdownBox(PMA_CSDROPDOWN_COLLATION, 'db_collation', 'select_db_collation', $db_collation, FALSE, 3)
  217.        . '    </td><td align="right">'
  218.        . '            <input type="submit" name="submitcollation" value="' . $strGo . '" style="vertical-align: middle" />' . "\n"
  219.        . '    </td></tr>' . "\n"
  220.        . '        </form>' . "\n"
  221.        . '         ' . "\n\n";
  222. }
  223.  
  224. if ($num_tables > 0
  225.     && !$cfgRelation['allworks'] && $cfg['PmaNoRelation_DisableWarning'] == FALSE) {
  226.     echo '<tr><td colspan="3"><img src="' . $GLOBALS['pmaThemeImage'] . 'spacer.png' . '" width="1" height="1" border="0" alt="" /></td></tr>'
  227.         . '<tr><th colspan="3" class="tblHeadError"><div class="errorhead">' . $strError . '</div></th></tr>'
  228.         . '<tr><td colspan="3" class="tblError">'
  229.         . sprintf(wordwrap($strRelationNotWorking,65,'<br />'), '<a href="' . $cfg['PmaAbsoluteUri'] . 'chk_rel.php?' . $url_query . '">',  '</a>')
  230.         . '</td></tr>';
  231. } // end if
  232. ?>
  233. </table>
  234.  
  235. <form method="post" action="pdf_schema.php">
  236. <?php
  237. // is this OK to check for 'class' support?
  238. if ($num_tables > 0) {
  239.     $takeaway = $url_query . '&table=' . urlencode($table);
  240. }
  241.  
  242. if (($cfgRelation['pdfwork'] && $num_tables > 0) ||
  243.     ($num_tables > 0
  244.      && $cfgRelation['relwork'] && $cfgRelation['commwork']
  245.      && isset($cfg['docSQLDir']) && !empty($cfg['docSQLDir'])
  246.     )) { ?>
  247. <hr /><table border="0" cellpadding="2" cellspacing="0">
  248. <?php
  249. }
  250.  
  251. if ($cfgRelation['pdfwork'] && $num_tables > 0) { ?>
  252.     <!-- Work on PDF Pages -->
  253.     <tr>
  254.         <td colspan="3" class="tblHeaders">
  255.     <?php
  256.     if ($cfg['PropertiesIconic']) {
  257.         echo '<img src="' . $pmaThemeImage . 'b_pdfdoc.png" border="0" width="16" height="16" hspace="2" align="middle" />';
  258.     } ?>PDF</td>
  259.     </tr>
  260.  
  261.     <tr bgcolor="<?php echo $cfg['BgcolorOne']; ?>">
  262.         <td colspan="3">
  263.         <?php
  264.             echo '<a href="pdf_pages.php?' . $takeaway . '">';
  265.             if ($cfg['PropertiesIconic']) {
  266.                 echo '<img src="' . $pmaThemeImage . 'b_edit.png" border="0" width="16" height="16" hspace="2" align="middle" />';
  267.             }
  268.             echo ''. $strEditPDFPages . '</a>';
  269.         ?>
  270.         </td>
  271.     </tr>
  272.  
  273.     <!-- PDF schema -->
  274.     <?php
  275.     // We only show this if we find something in the new pdf_pages table
  276.  
  277.     $test_query = 'SELECT * FROM ' . PMA_backquote($cfgRelation['pdf_pages'])
  278.                 . ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\'';
  279.     $test_rs    = PMA_query_as_cu($test_query, NULL, PMA_DBI_QUERY_STORE);
  280.  
  281.     if ($test_rs && PMA_DBI_num_rows($test_rs) > 0) { ?>
  282.     <tr bgcolor="<?php echo $cfg['BgcolorTwo']; ?>">
  283.         <td colspan="3">
  284.         <?php
  285.          echo PMA_generate_common_hidden_inputs($db);
  286.          if ($cfg['PropertiesIconic']) {
  287.              echo '<img src="' . $pmaThemeImage . 'b_view.png" border="0" width="16" height="16" hspace="2" align="middle" />';
  288.          }
  289.          echo $strDisplayPDF; ?>: 
  290.         </td>
  291.     </tr>
  292.  
  293.     <tr bgcolor="<?php echo $cfg['BgcolorTwo']; ?>">
  294.         <td width="20"> </td>
  295.         <td colspan="2">
  296.             <label for="pdf_page_number_opt"><?php echo $strPageNumber; ?></label>
  297.             <select name="pdf_page_number" id="pdf_page_number_opt">
  298.             <?php
  299.             while ($pages = @PMA_DBI_fetch_assoc($test_rs)) {
  300.                 echo '                <option value="' . $pages['page_nr'] . '">' . $pages['page_nr'] . ': ' . $pages['page_descr'] . '</option>' . "\n";
  301.             } // end while
  302.             PMA_DBI_free_result($test_rs);
  303.             unset($test_rs);
  304.             ?>
  305.             </select><br />
  306.  
  307.             <input type="checkbox" name="show_grid" id="show_grid_opt" /><label for="show_grid_opt"><?php echo $strShowGrid; ?></label><br />
  308.             <input type="checkbox" name="show_color" id="show_color_opt" checked="checked" /><label for="show_color_opt"><?php echo $strShowColor; ?></label><br />
  309.             <input type="checkbox" name="show_table_dimension" id="show_table_dim_opt" /><label for="show_table_dim_opt"><?php echo $strShowTableDimension; ?></label><br />
  310.             <input type="checkbox" name="all_tab_same_wide" id="all_tab_same_wide" /><label for="all_tab_same_wide"><?php echo $strAllTableSameWidth; ?></label><br />
  311.             <input type="checkbox" name="with_doc" id="with_doc" checked="checked" /><label for="with_doc"><?php echo $strDataDict; ?></label><br />
  312.  
  313.             <label for="orientation_opt"><?php echo $strShowDatadictAs; ?></label>
  314.             <select name="orientation" id="orientation_opt">
  315.                 <option value="L"><?php echo $strLandscape;?></option>
  316.                 <option value="P"><?php echo $strPortrait;?></option>
  317.             </select><br />
  318.  
  319.             <label for="paper_opt"><?php echo $strPaperSize; ?></label>
  320.             <select name="paper" id="paper_opt">
  321.             <?php
  322.                 foreach ($cfg['PDFPageSizes'] AS $key => $val) {
  323.                     echo '<option value="' . $val . '"';
  324.                     if ($val == $cfg['PDFDefaultPageSize']) {
  325.                         echo ' selected="selected"';
  326.                     }
  327.                     echo ' >' . $val . '</option>' . "\n";
  328.                 }
  329.             ?>
  330.             </select>
  331.         </td>
  332.     </tr>
  333.  
  334.     <tr bgcolor="<?php echo $cfg['BgcolorTwo']; ?>">
  335.         <td width="20"> </td>
  336.         <td colspan="3" align="right">  <input type="submit" value="<?php echo $strGo; ?>" /></td>
  337.     </tr>
  338.     <tr>
  339.         <td colspan="3"><img src="<?php echo $GLOBALS['pmaThemeImage'] . 'spacer.png'; ?>" width="1" height="1" border="0" alt="" /></td>
  340.     </tr>
  341.         <?php
  342.     }   // end if
  343. } // end if
  344.  
  345. if ($num_tables > 0
  346.     && $cfgRelation['relwork'] && $cfgRelation['commwork']
  347.     && isset($cfg['docSQLDir']) && !empty($cfg['docSQLDir'])
  348.     ) {
  349. ?>
  350.     <!-- import docSQL files -->
  351.     <tr bgcolor="<?php echo $cfg['BgcolorOne']; ?>">
  352.         <td colspan="3">
  353.         <?php
  354.         echo '<a href="db_details_importdocsql.php?' . $takeaway . '">';
  355.         if ($cfg['PropertiesIconic']) {
  356.             echo '<img src="' . $pmaThemeImage . 'b_docsql.png" border="0" width="16" height="16" hspace="2" align="middle" />';
  357.         }
  358.         echo $strImportDocSQL . '</a>';
  359.         ?>
  360.         </td>
  361.     </tr>
  362.     <?php
  363. }
  364. echo "\n";
  365. if (($cfgRelation['pdfwork'] && $num_tables > 0) ||
  366.     ($num_tables > 0
  367.      && $cfgRelation['relwork'] && $cfgRelation['commwork']
  368.      && isset($cfg['docSQLDir']) && !empty($cfg['docSQLDir'])
  369.     )) { ?>
  370. </table>
  371. </form>
  372. <?php
  373. }
  374.  
  375. /**
  376.  * Displays the footer
  377.  */
  378. echo "\n";
  379. require_once('./footer.inc.php');
  380. ?>
  381.